Docker啓用GPU

睡睡唸

上面168. Docker build失敗跳出killed169. Nginx的負載平衡
這兩篇都是為了要達到內部AI平臺再用,
不要讓每個人的電腦都自己裝一堆程式。

正文

電腦裝完顯卡驅動後,要讓docker識別,
還需要額外裝 NVIDIA Container Toolkit

照著官方文件來,挺快的。

這邊記錄ubuntu的方法,其他的安裝方式,請參考上面文件

  1. 更新
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list \
  && \
    sudo apt-get update
  1. 安裝
sudo apt-get install -y nvidia-container-toolkit
  1. docker設定 (containerd、CRI-O的話,參考上面連結)
sudo nvidia-ctk runtime configure --runtime=docker
  1. 重啓
sudo systemctl restart containerd
  1. 驗證
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

顯示下面的資料就表示有了。
170-fig.1.jpg

Docker-compose

如果使用docker compose的話,
須在yaml上面增加一些設定,command 到 capabilities
當然也可以指定此container要吃第幾個gpu,
更詳細說明請參考Turn on GPU access with Docker Compose
提示:主要在count的設定

version: '3.8'
services:
  python-1:
    container_name: yolox-brand-1
    image: busybox
    command: nvidia-smi
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    pull_policy: if_not_present
    restart: always
    networks:
      - internal
networks:
  internal:
    name: internal
    driver: bridge